///**
// * SearchConfigFactory.java
// */
//package com.mht2017.common.mongo.dto;
//
//import java.util.ArrayList;
//import java.util.List;
//
//import org.apache.commons.lang.StringUtils;
//
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//
//public class SearchConfigFactory extends AbstractMongoDtoFactory<SearchConfigDto> {
//
//	@Override
//	protected SearchConfigDto pickOne(JSONObject configObject) {
//		SearchConfigDto searchConfigDto = new SearchConfigDto();
//		searchConfigDto.setVersion(configObject.getIntValue("version"));
//		searchConfigDto.setConfigName(StringUtils.trim(configObject.getString("configName")));
//		searchConfigDto.setIndex(StringUtils.trim(configObject.getString("index")));
//		searchConfigDto.setType(StringUtils.trim(configObject.getString("type")));
//		searchConfigDto.setSettings(StringUtils.trim(configObject.getString("settings")));
//		searchConfigDto.setMapping(StringUtils.trim(configObject.getString("mapping")));
//		searchConfigDto.setTables(pickTableDatas(configObject.getJSONArray("datas")));
//		return searchConfigDto;
//	}
//
//	private List<SearchConfigTableDto> pickTableDatas(JSONArray tables) {
//		if (null != tables && tables.isEmpty() == false) {
//			List<SearchConfigTableDto> resultsDtos = new ArrayList<>();
//			for (int i = 0; i < tables.size(); i++) {
//				JSONObject jsonTableDataObject = tables.getJSONObject(i);
//				SearchConfigTableDto searchConfigTableDto = new SearchConfigTableDto();
//				JSONObject jsonDataSourceObject = jsonTableDataObject.getJSONObject("dataSource");
//				searchConfigTableDto.setIndex(i);
//				searchConfigTableDto.setDataSourceName(StringUtils.trim(jsonDataSourceObject.getString("dataSourceName")));
//				searchConfigTableDto.setTableName(StringUtils.trim(jsonDataSourceObject.getString("table")));
//				searchConfigTableDto.setTableColumns(pickTableItems(jsonTableDataObject.getJSONArray("tableData")));
//				resultsDtos.add(searchConfigTableDto);
//			}
//			return resultsDtos;
//		}
//		return null;
//	}
//
//	private List<SearchConfigTableColumnDto> pickTableItems(JSONArray jsonTableItemArray) {
//		if (null != jsonTableItemArray && jsonTableItemArray.isEmpty() == false) {
//			List<SearchConfigTableColumnDto> resultDtos = new ArrayList<>();
//			for (int i = 0; i < jsonTableItemArray.size(); i++) {
//				JSONObject jsonTableItemObject = jsonTableItemArray.getJSONObject(i);
//				SearchConfigTableColumnDto searchConfigTableColumnDto = new SearchConfigTableColumnDto();
//				searchConfigTableColumnDto.setIndexField(StringUtils.trim(jsonTableItemObject.getString("indexfield")));
//				searchConfigTableColumnDto.setDbField(StringUtils.trim(jsonTableItemObject.getString("dbfield")));
//				searchConfigTableColumnDto.setIsPrimarykey(trimToIntString(StringUtils.trim(jsonTableItemObject.getString("isprimarykey"))));
//				searchConfigTableColumnDto.setSearchable(trimToIntString(StringUtils.trim(jsonTableItemObject.getString("searchable"))));
//				searchConfigTableColumnDto.setType(StringUtils.trim(jsonTableItemObject.getString("type")));
//				searchConfigTableColumnDto.setAnalyzer(StringUtils.trim(jsonTableItemObject.getString("analyzer")));
//				searchConfigTableColumnDto.setIsManyToOne(trimToIntString(StringUtils.trim(jsonTableItemObject.getString("isManyToOne"))));
//				searchConfigTableColumnDto.setAssociateTable(StringUtils.trim(jsonTableItemObject.getString("associate_table")));
//				searchConfigTableColumnDto.setAssociateField(StringUtils.trim(jsonTableItemObject.getString("associate_field")));
//				searchConfigTableColumnDto.setCopyTo(StringUtils.trim(jsonTableItemObject.getString("copy_to")));
//				resultDtos.add(searchConfigTableColumnDto);
//			}
//			return resultDtos;
//		}
//		return null;
//	}
//
//	private String trimToIntString(String toTrim) {
//		if (StringUtils.isNotEmpty(toTrim)) {
//			try {
//				return String.valueOf(Double.valueOf(toTrim).intValue());
//			} catch (NumberFormatException e) {
//			}
//		}
//		return toTrim;
//	}
//}
